package com.chuanwei.controller;

import com.chuanwei.anno.Log;
import com.chuanwei.pojo.Dept;
import com.chuanwei.pojo.Result;
import com.chuanwei.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Delete;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RequestMapping(("/depts"))
@RestController
public class DeptController {

    private static final Logger log = LoggerFactory.getLogger(DeptController.class);//固定代码


    @Autowired
    private DeptService deptService;


    /**
     *查询部门列表
     */
    @GetMapping
    public Result list(){
       log.info("查询所有数据");
        List<Dept>  deptList  =  deptService.findAll();//因为查询的是所有所以返回的集合
        return Result.success(deptList);
    }


    /**
     *根据id删除部门
     */
    @Log
    @DeleteMapping
    public Result delete(Integer id){
       log.info("根据id删除部门 {}",id);
        deptService.deletById(id);
        return Result.success();
    }


    /**
     * 新增部门
     */
    @Log
    @PostMapping
    public Result add(@RequestBody  Dept dept) {//@RequestBody注解直接把前端传来的jason格式的数据封装到一个对象当要保证对象的属性名要与jason格式中键的名字相同


        //System.out.println("添加部门"+dept);
        log.info("查询全部的部门数据 {}",dept);

        deptService.add(dept);

        return Result.success();
    }


    /**
     * 修改部门---查询回显（根据id查询数据）
     */

    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id){
        log.info("根据ID查询：{}",id);

        Dept dept = deptService.getById(id);//因为查询的是单个，所以返回的是Dept对象，把他们都封装在一个对象里

        return Result.success(dept);
    }

    /**
     * 修改部门- put 请求参数{"id":"1"，"name":"研发部"}
     */
    @Log
   @PutMapping
    public Result update(@RequestBody  Dept dept){

       log.info("修改部门 ：{}",dept);

       deptService.update(dept);


        return Result.success();
    }

















}
